<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


    <script>


        // 
        //    一个父类拥有一些属性和方法
        //    另一个子类也拥有这些属性和方法  且还有自己的其他的属性和方法    


        // 继承： 子类去继承父类的这些属性和方法，然后也添加自己的属性和方法  的  过程    


        // 原型继承 ： 子类的prototype指向父类的实例化对象
        //    继承来的属性都在原型链上
        //    当父类有参数的时候，无法传参  --- 只能在子类上新增这个属性去覆盖


        function Person(name) {
            this.type = '人';
            this.name = name;
        }

        Person.prototype.say = function () {
            console.log('hi');
        }


        function Student(grade, score, name) {
            this.grade = grade;
            this.score = score;

            this.name = name;
        }


        // 去继承父类
        Student.prototype = new Person('cc');


        // 添加自己的方法
        Student.prototype.speak = function () {
            console.log('hi 我考了' + this.score + '分');
        }



        const s = new Student('3', 100, 'yy');
        console.log(s);


        console.log(s.name);




    </script>

</body>

</html>